﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using BuscadorDePreco.DataContract;
using System.Transactions;

namespace BuscadorDePreco.Data
{
    public class ProdutoTableAdapter
    {
        public int AdicionarProduto(ProdutoData produto)
        {
            TransactionOptions transactionConfig = new TransactionOptions();
            transactionConfig.IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted;
            int id = -1;
            using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, transactionConfig))
            {
                using (BuscadorEntities buscadorEntities = new BuscadorEntities())
                {
                    Produto prod = ProdutoData.ToProdutoObj(produto);

                    buscadorEntities.Produto.AddObject(prod);
                    buscadorEntities.SaveChanges();

                    id = prod.Id;
                }
                scope.Complete();
            }

            return id;
        }

        public List<ProdutoData> RecuperarProdutos()
        {
            List<ProdutoData> produtoList = new List<ProdutoData>();

            using (BuscadorEntities buscadorEntities = new BuscadorEntities())
            {
                var produtos = (from emp in buscadorEntities.Produto
                                  select emp).ToList();

                foreach (Produto prod in produtos)
                    produtoList.Add(ProdutoData.ToProdutoData(prod));
            }

            return produtoList;
        }
    }
}